Transaction Management API হল Hazelcast-এ ডিস্ট্রিবিউটেড ডেটা অপারেশনগুলিকে অ্যাটমিক, কনসিসটেন্ট, আইসোলেটেড, এবং ডিউরেবল (ACID) করতে ব্যবহৃত একটি ফিচার। এটি ব্যবহারকারীদের একাধিক ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারে একযোগে অপারেশন করার অনুমতি দেয়, যেখানে সমস্ত অপারেশন একসাথে সফল হলে commit করা হয় এবং যদি কোনো সমস্যা ঘটে, তবে সমস্ত অপারেশন rollback করা হয়। এটি ডেটার অখণ্ডতা এবং সিস্টেমের সঠিকতা নিশ্চিত করে।
Hazelcast Transaction Management API আপনাকে distributed transactions পরিচালনা করার জন্য একটি শক্তিশালী পদ্ধতি প্রদান করে। আপনি একাধিক ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারে (যেমন IMap
, IQueue
, IList
, ISet
) ট্রানজেকশন পরিচালনা করতে পারেন।
Hazelcast এর Transaction Management API ACID (Atomicity, Consistency, Isolation, Durability) প্রিন্সিপলের উপর ভিত্তি করে কাজ করে, যাতে ডিস্ট্রিবিউটেড সিস্টেমের মধ্যে ডেটা অপারেশনগুলো নিরাপদ এবং সঠিকভাবে সম্পন্ন হয়। এখানে কিছু মৌলিক ধারণা দেওয়া হলো:
Hazelcast-এ ট্রানজেকশন ব্যবহারের জন্য প্রথমে TransactionContext তৈরি করতে হয়, এবং তারপর ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারে ট্রানজেকশন অপারেশন পরিচালনা করা হয়। নিচে একটি উদাহরণ দেয়া হলো যেখানে IMap ডেটা স্ট্রাকচারে ট্রানজেকশন পরিচালনা করা হয়েছে।
Hazelcast-এ ট্রানজেকশন ব্যবহারের জন্য আপনাকে TransactionManager কনফিগার করতে হবে। এটি আপনার সিস্টেমে ট্রানজেকশন পরিচালনার জন্য একটি সেন্ট্রাল ম্যানেজার হিসেবে কাজ করবে।
Config config = new Config();
TransactionConfig transactionConfig = new TransactionConfig();
transactionConfig.setTransactionTimeToLive(5000); // Timeout for transaction
config.setTransactionConfig(transactionConfig);
HazelcastInstance hz = Hazelcast.newHazelcastInstance(config);
এখানে, transactionTimeToLive
সেট করার মাধ্যমে আপনি ট্রানজেকশনের জন্য একটি সময়সীমা নির্ধারণ করতে পারেন। যদি এই সময়সীমার মধ্যে ট্রানজেকশন সম্পন্ন না হয়, তবে তা স্বয়ংক্রিয়ভাবে বাতিল হয়ে যাবে।
Hazelcast এর TransactionContext ক্লাস ব্যবহার করে আপনি ট্রানজেকশন শুরু করতে পারেন এবং এরপর ডিস্ট্রিবিউটেড ডেটা স্ট্রাকচারগুলোতে নিরাপদে অপারেশন করতে পারবেন।
TransactionContext context = hz.getTransaction();
context.beginTransaction(); // Start a transaction
IMap<String, String> map = hz.getMap("myMap");
// Performing transaction operations
map.put("key1", "value1");
map.put("key2", "value2");
context.commitTransaction(); // Commit the transaction
এখানে:
beginTransaction
ট্রানজেকশন শুরু করে।put
অপারেশন।commitTransaction
ট্রানজেকশন সফল হলে এটি কার্যকর করে, অর্থাৎ ডেটা সেভ হয়ে যাবে।যদি ট্রানজেকশনের কোনো অংশে সমস্যা হয়, তবে আপনি পুরো ট্রানজেকশনটি রোলব্যাক করতে পারেন।
try {
context.beginTransaction();
IMap<String, String> map = hz.getMap("myMap");
map.put("key1", "value1");
map.put("key2", "value2");
// Simulate some failure
if (someConditionFails()) {
throw new RuntimeException("Transaction failed");
}
context.commitTransaction(); // Commit if everything is successful
} catch (Exception e) {
context.rollbackTransaction(); // Rollback if any exception occurs
System.out.println("Transaction rolled back due to: " + e.getMessage());
}
এখানে, যদি কোনো সমস্যা ঘটে (যেমন someConditionFails
ফাংশন), তাহলে rollbackTransaction কল করা হবে, যার মাধ্যমে সমস্ত ডেটা পরিবর্তন বাতিল হয়ে যাবে।
Hazelcast Transaction Management API ডিস্ট্রিবিউটেড সিস্টেমে ACID প্রিন্সিপল অনুসরণ করে ডেটার নিরাপত্তা এবং সঠিকতা নিশ্চিত করতে ব্যবহৃত হয়। এটি আপনাকে distributed transactions পরিচালনা করতে এবং একাধিক ডেটা স্ট্রাকচারে অ্যাটমিক অপারেশন সম্পন্ন করতে সহায়তা করে। ট্রানজেকশন কনফিগারেশন, commit, rollback অপারেশনগুলি এবং exception handling এর মাধ্যমে আপনি সিস্টেমের মধ্যে ডেটার সঠিকতা এবং একনিষ্ঠতা বজায় রাখতে পারবেন।
common.read_more